home *** CD-ROM | disk | FTP | other *** search
-
-
-
- aaaauuuuttttoooouuuusssseeee((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) aaaauuuuttttoooouuuusssseeee((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- autouse - postpone load of modules until a function is used
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use autouse 'Carp' => qw(carp croak);
- carp "this carp was predeclared and autoused ";
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- If the module Module is already loaded, then the declaration
-
- use autouse 'Module' => qw(func1 func2($;$) Module::func3);
-
- is equivalent to
-
- use Module qw(func1 func2);
-
- if Module defines _f_u_n_c_2() with prototype ($;$), and _f_u_n_c_1()
- and _f_u_n_c_3() have no prototypes. (At least if Module uses
- Exporter's import, otherwise it is a fatal error.)
-
- If the module Module is not loaded yet, then the above
- declaration declares functions _f_u_n_c_1() and _f_u_n_c_2() in the
- current package, and declares a function _M_o_d_u_l_e::_f_u_n_c_3().
- When these functions are called, they load the package
- Module if needed, and substitute themselves with the correct
- definitions.
-
- WWWWAAAARRRRNNNNIIIINNNNGGGG
- Using autouse will move important steps of your program's
- execution from compile time to runtime. This can
-
- +o Break the execution of your program if the module you
- autoused has some initialization which it expects to be
- done early.
-
- +o hide bugs in your code since important checks (like
- correctness of prototypes) is moved from compile time
- to runtime. In particular, if the prototype you
- specified on autouse line is wrong, you will not find
- it out until the corresponding function is executed.
- This will be very unfortunate for functions which are
- not always called (note that for such functions
- autouseing gives biggest win, for a workaround see
- below).
-
- To alleviate the second problem (partially) it is advised to
- write your scripts like this:
-
- use Module;
- use autouse Module => qw(carp($) croak(&$));
- carp "this carp was predeclared and autoused ";
-
-
-
- Page 1 (printed 10/23/98)
-
-
-
-
-
-
- aaaauuuuttttoooouuuusssseeee((((3333)))) 22223333////JJJJuuuullll////99998888 ((((ppppeeeerrrrllll 5555....000000005555,,,, ppppaaaattttcccchhhh 00002222)))) aaaauuuuttttoooouuuusssseeee((((3333))))
-
-
-
- The first line ensures that the errors in your argument
- specification are found early. When you ship your
- application you should comment out the first line, since it
- makes the second one useless.
-
- AAAAUUUUTTTTHHHHOOOORRRR
- Ilya Zakharevich (ilya@math.ohio-state.edu)
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- _p_e_r_l(1).
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Page 2 (printed 10/23/98)
-
-
-
-